#ifndef __IOT_SHELL_H
#define __IOT_SHELL_H

#include <stdio.h>
#include <stdint.h>
#include <sys/types.h>


// 定义终端缓冲区大小
#define SHELL_BUFF_SIZE 4096
 

/**
   @brief shell是否已启动
   @return 1-是，0-否
*/
uint8_t is_shell_open();


/**
   @brief 启动shell子进程 
   @return 1-成功，0-失败
*/
uint8_t shell_open();


/**
   @brief 关闭shell子进程
*/
void shell_close();


/**
   @brief 命令格式化，防止Shell注入风险

   @param cmd       输入命令
   @param out_cmd   输出格式化后的命令
   @param out_size  输出缓冲区最大长度
   @return          返回命令长度
*/
uint32_t format_command(const char *cmd, char *out_cmd, size_t out_size);


/**
   @brief 执行shell命令并获取结果
   
   @param cmd          输入命令
   @param output       返回结果
   @param output_size  返回结果最大长度
   @return             错误码: 0-成功，<0失败
*/
int8_t shell_exec_cmd(const char *cmd, char *output, size_t output_size);


#endif
